/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package servlets;

import java.io.IOException;  
import java.util.ArrayList;
import java.util.Collection;  
import javax.ejb.EJB;  
import javax.servlet.RequestDispatcher;  
import javax.servlet.ServletException;  
import javax.servlet.annotation.WebServlet;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import utilisateurs.gestionnaires.GestionnaireUtilisateurs;  
import utilisateurs.modeles.Utilisateur;  
 
/**
 *
 * @author Marcouss
 */
import javax.servlet.http.HttpSession;
@WebServlet(name = "ServletUsers", urlPatterns = {"/ServletUsers"})
public class ServletUsers extends HttpServlet {
    @EJB
    private GestionnaireUtilisateurs gestionnaireUtilisateurs;
    int page = 1;
    int pageTotal =1;
    boolean hideNext=true;
    boolean hidePrev=true;
    
    
    
    //Boolean connecte = false;//session.getAttribute("connecte");
    
    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
        // Pratique pour décider de l'action à faire  
        String action = request.getParameter("action");
        HttpSession session = request.getSession(true);
        session.setAttribute("page",""+page);
        session.setAttribute("pageTot",""+pageTotal);
        session.setAttribute("hideNext", hideNext);
        session.setAttribute("hidePrev", hidePrev);
        String loginSession = session.getAttribute("log").toString();
        
        //gestionnaireUtilisateurs.creeUtilisateur("Chamly", "Marc", "Admin", "admin", "mail");
        String forwardTo = "";  
        String message = ""; 
        
        
        
        
        if (action != null) { 
            
            
            if (action.equals("inscription")){
                RequestDispatcher dp = request.getRequestDispatcher("inscription.jsp");
                dp.forward(request, response);
            }
            
            
            if(action.equals("deconnexion")){
                session.setAttribute("connecte",false);
                forwardTo="index.jsp?action=listerLesUtilisateurs";
            }
            
            else if (action.equals("listerLesUtilisateurs")) {  
                Collection<Utilisateur> liste = gestionnaireUtilisateurs.getSomeUsers(10, page);
                pageTotal = gestionnaireUtilisateurs.getPageTotal()/10+1;
                if(pageTotal==1){
                    hideNext=true;
                    hidePrev=true;
                }
                else if(page==1){
                    hidePrev=true;
                    hideNext=false;
                }
                session.setAttribute("hideNext",hideNext);
                session.setAttribute("hidePrev",hidePrev);
                session.setAttribute("pageTot", ""+pageTotal);
                //System.out.println("page total " + pageTotal +" = " + gestionnaireUtilisateurs.getPageTotal());
                //System.out.println("jte pisse dessu " + (gestionnaireUtilisateurs.getPageTotal()/10+1));
                request.setAttribute("listeDesUsers", liste);
                forwardTo = "index.jsp?action=listerLesUtilisateurs";  
                message = "Liste des utilisateurs";  
            }
            else if (action.equals("AfficherMonCompte")) {   
                forwardTo = "monCompte.jsp?action=AfficherMonCompte"; 
                Collection<Utilisateur> liste = gestionnaireUtilisateurs.getUtilisateur(loginSession); // .uh.createUser(login,nom,prenom);
                request.setAttribute("mesInfos", liste);
                System.out.println("finis" + loginSession);  
            }
            
            else if (action.equals("updateInfo")){ 
                String nom = request.getParameter("nom");
                String prenom = request.getParameter("prenom");
                String login = loginSession;
                String mail = request.getParameter("mail");
                System.out.println(login);
                gestionnaireUtilisateurs.updateUtilisateur(nom,prenom,mail,login);
                Collection<Utilisateur> liste = gestionnaireUtilisateurs.getUtilisateur(loginSession); // .uh.createUser(login,nom,prenom);
                request.setAttribute("mesInfos", liste);
                forwardTo = "monCompte.jsp?action=AfficherMonCompte"; 
                
            }
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            else if (action.equals("CreerUtilisateur")) {    
                forwardTo = "index.jsp?action=CreerUtilisateur";  
                message = "Liste des utilisateurs";  
            } 
            else if (action.equals("AfficherUtilisateur")) {    
                forwardTo = "index.jsp?action=AfficherUtilisateur";  
                message = "Liste des utilisateurs";  
            }
            else if (action.equals("ModifierUtilisateur")) {    
                forwardTo = "index.jsp?action=ModifierUtilisateur";  
                message = "Liste des utilisateurs";  
            }
            else if (action.equals("EffacerUtilisateur")) {    
                forwardTo = "index.jsp?action=EffacerUtilisateur";  
                message = "Liste des utilisateurs";  
            }
            
            else if (action.equals("creerUnUtilisateur")){  
                //forwardTo = "index.jsp?action=todo";
                forwardTo = "index.jsp?action=creerUnUtilisateur";
                message = "La fonctionnalité pour le paramètre " + action + " est implémenté !"; 
                String nom = request.getParameter("nom");
                String prenom = request.getParameter("prenom");
                String login = request.getParameter("login");
                String password = request.getParameter("password");
                String mail = "mail";
                int x = gestionnaireUtilisateurs.creeUtilisateur(nom,prenom,login,password,mail);
                if(x == -1){
                    message = "Login déjà utilisé, veuillez choisir un autre login";
                    forwardTo="index.jsp?action=listerLesUtilisateurs";
                }
                else{
                    Collection<Utilisateur> liste = gestionnaireUtilisateurs.getSomeUsers(10, page);
                    request.setAttribute("listeDesUsers", liste);
                    message = "Creation utilisateurs";
                    forwardTo = "index.jsp?action=listerLesUtilisateurs";  
                }
            } 
            else if (action.equals("updateUtilisateur")){  
                message = "La fonctionnalité pour le paramètre " + action + " est implémenté !"; 
                String nom = request.getParameter("nom");
                String prenom = request.getParameter("prenom");
                String login = request.getParameter("login");
                String password = request.getParameter("password");
                gestionnaireUtilisateurs.updateUtilisateur(prenom,nom,login,password);
                Collection<Utilisateur> liste = gestionnaireUtilisateurs.getSomeUsers(10, page);  
                request.setAttribute("listeDesUsers", liste); 
                forwardTo = "index.jsp?action=listerLesUtilisateurs";
                message = "Utilisateur Modifié";
                
            }
            
            else if (action.equals("NextPage")){  
                page +=1;
                if(page==pageTotal){
                    hideNext = true;
                    session.setAttribute("hideNext",hideNext);
                }
                hidePrev=false;
                session.setAttribute("hidePrev",hidePrev);
                session.setAttribute("page",""+page);
                message = "La fonctionnalité pour le paramètre " + action + " est implémenté !"; 
                Collection<Utilisateur> liste = gestionnaireUtilisateurs.getSomeUsers(10, page);
                //System.out.println(liste);
                request.setAttribute("listeDesUsers", liste); 
                forwardTo = "index.jsp?action=listerLesUtilisateurs";
            }
            else if (action.equals("PrevPage")){  
                //if (page>1){
                page -=1;
                if(page==1){
                    hidePrev = true;
                    hideNext = false;
                    session.setAttribute("hidePrev",hidePrev);
                    session.setAttribute("hideNext",hideNext);
                }
                session.setAttribute("page",""+page);
                message = "La fonctionnalité pour le paramètre " + action + " est implémenté !";
                Collection<Utilisateur> liste = gestionnaireUtilisateurs.getSomeUsers(10, page);
                System.out.println("Je back d'une page et je suis arrivé a la page numeros: "+ page);
                request.setAttribute("listeDesUsers", liste);
                forwardTo = "index.jsp?action=listerLesUtilisateurs";
                //}
                //else {
                    //hidePrev=true;
                    //session.setAttribute("hidePrev",hidePrev);
                //}
            }
            
            else {  
                forwardTo = "index.jsp?action=todo";
                message = "La fonctionnalité pour le paramètre " + action + " est à implémenter !";  
            }  
        }  
        //RequestDispatcher dp = request.getRequestDispatcher("index.jsp");     
        //dp.forward(request, response);
        RequestDispatcher dp = request.getRequestDispatcher(forwardTo + "&message=" + message);  
        dp.forward(request, response);  
        // Après un forward, plus rien ne peut être exécuté après !  
    }  

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}